如果只是要簡單顯示文字時,通常會使用 ebitenutil.DebugPrintAt()
,但是就會遇到中文無法顯示的問題。問題應該是預設使用的字體不包含中文的字型。
ebitenutil.DebugPrintAt(screen, "hello world", 0, 20)
因此解決辦法就是改成包含中文的字體
這邊找到幾個開源的中文字體:
go get golang.org/x/image/font/sfnt
範例程式碼
import (
"log"
_ "embed"
"image"
"image/color"
_ "image/png"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
"github.com/hajimehoshi/ebiten/v2/inpututil"
"github.com/hajimehoshi/ebiten/v2/text"
"golang.org/x/image/font"
"golang.org/x/image/font/opentype"
)
//go:embed Cubic_11_1.013_R.ttf
cubicFont []byte
var font font.Face
func init() {
// 讀取字體
tt, err := opentype.Parse(cubicFont)
if err != nil {
log.Fatal(err)
}
font, err = opentype.NewFace(tt, nil)
if err != nil {
log.Fatal(err)
}
}
// ...略
func (g *App) Draw(screen *ebiten.Image) {
text.Draw(screen, "hello 123 中文測試", g.font, 0, 30, color.White)
}